//
//  NSComparisonPredicate.swift
//  Documentation
//
//  Created by Toj on 11/14/23.
//

import CoreFoundation


/**
 NSComparisonPredicate是比较谓词,通过左右两表达式组合来评估对象.
 NSComparisonPredicate是NSPredicate的子类,
 查看NSPredicate的用法, 更容易理解NSComparisonPredicate.
 NSComparisonPredicate中使用的NSExpression可点击NSExpression的使用了解
 */
@available(iOS 3.0, *)
open class NSComparisonPredicate : NSPredicate {
    
    /// 创建一个比较谓词
    /// - parameter lhs: 左表达式
    /// - parameter rhs: 右表达式
    /// - parameter modifier: 修饰语
    /// - parameter type: 类型
    /// - parameter options: 选项
    public init(
        leftExpression lhs: NSExpression,
        rightExpression rhs: NSExpression,
        modifier: NSComparisonPredicate.Modifier,
        type: NSComparisonPredicate.Operator,
        options: NSComparisonPredicate.Options = []
    )
    
    /// 创建一个比较谓词
    /// - parameter lhs: 左表达式
    /// - parameter rhs: 右表达式
    /// - parameter selector: 自定义的方法
    public init(
        leftExpression lhs: NSExpression,
        rightExpression rhs: NSExpression,
        customSelector selector: Selector)

    public init?(coder: NSCoder)

    //类型
    open var predicateOperatorType: NSComparisonPredicate.Operator { get }
    //修饰语
    open var comparisonPredicateModifier: NSComparisonPredicate.Modifier { get }
    //左表达式
    open var leftExpression: NSExpression { get }
    /// 右表达式
    open var rightExpression: NSExpression { get }
    /// 自定义的方法
    open var customSelector: Selector? { get }
    /// 选项
    open var options: NSComparisonPredicate.Options { get }
}
